package modules.listAll;

import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 集合类不安全
 *      map 在并发情况下是不安全的！
 *      会出现java.util.ConcurrentModificationException 并发修改异常！
 *      解决方案：
 *          使用Collections.synchronizedMap(new HashMap<>());处理；
 *          使用ConcurrentHashMap进行并发处理
 * @author shengren.yan
 * @create 2021-03-09
 */
public class Map3 {
    public static void main(String[] args) {
        //map 是这样用的吗？  不是，工作中不使用这个
        //默认等价什么？ new HashMap<>(16,0.75);
//        Map<String, String> map = new HashMap<>();
        //加载因子、初始化容量
//        for (int i = 1; i < 100; i++) {
//            new Thread(()->{
//                map.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0,5));
//                System.out.println(map);
//            },String.valueOf(i)).start();
//        }

        //解决map不安全
        Map<String, String> map2 = new ConcurrentHashMap<>();
        for (int i = 1; i < 100; i++) {
            new Thread(()->{
                map2.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0,5));
                System.out.println(map2);
            },String.valueOf(i)).start();
        }

    }
}
